// Extract<Type,Union> 
//从一个类型 中挑出 ，是另一个联合类型 的子集 的项，生成一个新的联合类型

type T0 = Extract<"a" | "b" | "c", "a" | "f">;
     
type T1 = Extract<string | number | (() => void), Function>;
     

export{}
type extract<T,U extends keyof any> =  T extends U ? T :never